import tseslint from "@electron-toolkit/eslint-config-ts";
import eslintConfigPrettier from "@electron-toolkit/eslint-config-prettier";
import eslintPluginReact from "eslint-plugin-react";
import eslintPluginReactHooks from "eslint-plugin-react-hooks";
import eslintPluginReactRefresh from "eslint-plugin-react-refresh";

export default tseslint.config(
	{ ignores: ["**/node_modules", "**/dist", "**/out"] },
	tseslint.configs.recommended,
	eslintPluginReact.configs.flat.recommended,
	eslintPluginReact.configs.flat["jsx-runtime"],
	{
		settings: {
			react: {
				version: "detect"
			}
		}
	},
	{
		files: ["**/*.{ts,tsx}"],
		plugins: {
			"react-hooks": eslintPluginReactHooks,
			"react-refresh": eslintPluginReactRefresh
		},
		rules: {
			...eslintPluginReactHooks.configs.recommended.rules,
			...eslintPluginReactRefresh.configs.vite.rules,
			"@typescript-eslint/explicit-function-return-type": "off",
			"@typescript-eslint/no-explicit-any": "off", // 禁止使用 any 类型
			"@typescript-eslint/explicit-module-boundary-types": "off" // 要求导出函数和类的公共类方法的显式返回和参数类型
		}
	},
	eslintConfigPrettier
);
